gtk_list_list_model_item_removed (priv->controller_observer, before);
}
-gboolean
-gtk_widget_consumes_motion (GtkWidget *widget,
- GtkWidget *parent,
- GdkEventSequence *sequence)
-{
- GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
-
- while (widget != NULL && widget != parent)
- {
- GList *l;
-
- for (l = priv->event_controllers; l; l = l->next)
- {
- GtkEventController *controller = l->data;
-
- if (controller == NULL ||
- !GTK_IS_GESTURE (controller))
- continue;
-
- if ((!GTK_IS_GESTURE_SINGLE (controller) ||
- GTK_IS_GESTURE_DRAG (controller) ||
- GTK_IS_GESTURE_SWIPE (controller)) &&
- gtk_gesture_handles_sequence (GTK_GESTURE (controller), sequence))
- return TRUE;
- }
-
- widget = priv->parent;
- priv = gtk_widget_get_instance_private (widget);
- }
-
- return FALSE;
-}
-
void
gtk_widget_reset_controllers (GtkWidget *widget)
{
GtkGesture *click_gesture;
GtkGesture *drag_gesture;
- GtkGesture *bubble_drag_gesture;
GtkWidget *child;
GtkWidget *fallback_menu;
if (ABS (offset_x) > double_click_distance ||
ABS (offset_y) > double_click_distance)
{
- GdkEventSequence *sequence;
double start_x, start_y;
double native_x, native_y;
double window_x, window_y;
GtkNative *native;
GdkSurface *surface;
- sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
-
- if (gtk_event_controller_get_propagation_phase (GTK_EVENT_CONTROLLER (gesture)) == GTK_PHASE_CAPTURE)
- {
- GtkWidget *event_widget = gtk_gesture_get_last_target (GTK_GESTURE (gesture), sequence);
-
- /* Check whether the target widget should be left alone at handling
- * the sequence, this is better done late to give room for gestures
- * there to go denied.
- *
- * Besides claiming gestures, we must bail out too if there's gestures
- * in the "none" state at this point, as those are still handling events
- * and can potentially go claimed, and we don't want to stop the target
- * widget from doing anything.
- */
- if (event_widget != GTK_WIDGET (self) &&
- gtk_widget_consumes_motion (event_widget, GTK_WIDGET (self), sequence))
- {
- gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_DENIED);
- return;
- }
- }
-
gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED);
gtk_gesture_drag_get_start_point (gesture, &start_x, &start_y);
}
}
-static GtkGesture *
-create_drag_gesture (GtkWindowHandle *self)
-{
- GtkGesture *gesture;
-
- gesture = gtk_gesture_drag_new ();
- g_signal_connect (gesture, "drag-update",
- G_CALLBACK (drag_gesture_update_cb), self);
- gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture));
-
- return gesture;
-}
-
static void
gtk_window_handle_unrealize (GtkWidget *widget)
{
{
self->click_gesture = gtk_gesture_click_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (self->click_gesture), 0);
- gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (self->click_gesture),
- GTK_PHASE_BUBBLE);
g_signal_connect (self->click_gesture, "pressed",
G_CALLBACK (click_gesture_pressed_cb), self);
gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (self->click_gesture));
- self->drag_gesture = create_drag_gesture (self);
- gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (self->drag_gesture),
- GTK_PHASE_CAPTURE);
-
- self->bubble_drag_gesture = create_drag_gesture (self);
- gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (self->bubble_drag_gesture),
- GTK_PHASE_BUBBLE);
+ self->drag_gesture = gtk_gesture_drag_new ();
+ g_signal_connect (self->drag_gesture, "drag-update",
+ G_CALLBACK (drag_gesture_update_cb), self);
+ gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (self->drag_gesture));
}
static GtkBuildableIface *parent_buildable_iface;